package com.tedu.emp.service.impl;

import com.tedu.emp.mapper.EmpMapper;
import com.tedu.emp.pojo.dto.EmpQuery;
import com.tedu.emp.pojo.dto.EmployeeSaveParam;
import com.tedu.emp.pojo.entity.Emp;
import com.tedu.emp.pojo.vo.EmpVO;
import com.tedu.emp.service.EmpService;
import com.tedu.user.pojo.vo.UserVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Slf4j
@Service
public class EmpServiceImpl implements EmpService {

    @Autowired
    EmpMapper empMapper;

    public void saveEmployee(EmployeeSaveParam employeeSaveParam) {
        log.debug("保存用户业务,参数:{}",employeeSaveParam);
        Emp emp = new Emp() ;
        BeanUtils.copyProperties(employeeSaveParam,emp);
        //需要判断是新增还是修改操作
        if(emp.getId()==null){
            emp.setPassword("123456");//员工不是自己注册,所以需要设置初始密码
            emp.setCreateTime(new Date());//设置创建时间为当前时间
            empMapper.insert(emp);//调用数据层新增员工
        }else{
            //TODO 更新用户
            emp.setUpdateTime(new Date());
            empMapper.update(emp);
        }
    }

    @Override
    public List<EmpVO> selectEmpl(EmpQuery empQuery) {
         log.debug("查询用户业务:EmpQuery={}",empQuery);
            List<EmpVO> list = empMapper.selectUser(empQuery);
            return list;
    }

    @Override
    public void resetPassword(Integer employeeId) {
        log.debug("重置密码业务,参数:{}",employeeId);
        Emp emp = new Emp();
        emp.setId(employeeId);
        emp.setPassword("123456");
        emp.setUpdateTime(new Date());
        empMapper.resetPassword(emp);
    }

    @Override
    public void updateStatus(Integer id, String status) {
        log.debug("更新状态业务,参数:{},{}",id,status);
        Emp emp = new Emp();
        emp.setId(id);
        emp.setStatus(status);
        emp.setUpdateTime(new Date());
        empMapper.update(emp);
    }

    @Override
    public void deleteEmployee(Integer id) {
        log.debug("删除用户业务,参数:{}",id);
        empMapper.deleteById(id);
    }


}
